package com.lingdong.onlinejudge.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lingdong.onlinejudge.model.dto.match.MatchCreateDto;
import com.lingdong.onlinejudge.model.dto.match.MatchQueryDto;
import com.lingdong.onlinejudge.model.dto.match.MatchUpdateDto;
import com.lingdong.onlinejudge.model.entity.Match;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lingdong.onlinejudge.model.entity.Topic;
import com.lingdong.onlinejudge.model.vo.match.MatchVo;

import java.util.List;

/**
* @author lzw
*/
public interface MatchService extends IService<Match> {

    /**
     * 创建比赛
     * @param matchCreateDto 比赛创建Dto
     * @return 结果
     */
    Boolean createMatch(MatchCreateDto matchCreateDto, String token);

    /**
     * 更新比赛
     * @param matchUpdateDto 比赛更新Dto
     * @return 结果
     */
    Boolean updateMatch(MatchUpdateDto matchUpdateDto);

    /**
     * 查询比赛列表
     * @param matchName 比赛名称
     * @return 比赛列表
     */
    List<Match> getMatchList(String matchName);

    /**
     * 查询比赛详情
     * @param id 比赛id
     * @return 比赛详情
     */
    MatchVo getMatch(Long id,String token);

    /**
     * 查询比赛列表
     * @param matchQueryDto 比赛查询Dto
     * @return 比赛列表
     */
    Page<Match> queryMatchByPage(MatchQueryDto matchQueryDto);


    /**
     * 判断比赛是否结算分数
     * @param matchId 比赛id
     */
    boolean isMatchFinish(Long matchId);

    /**
     * 根据比赛id 获取试题列表
     * @param matchId 比赛id
     * @return 试题列表
     */
    List<Topic> getTopicByMatchId(Long matchId);
}
